# 1、写函数,将传入的列表或元祖对象的奇数位索引对应的元素
# def a(data):
#     return data[1::2] if isinstance(data,(list,tuple)) else []
# print(a([1,2,3,4]))

# 2、写函数,判断用户传入的对象(string,list,tuple)长度是否大于5
# def a (obj):
#     if isinstance(obj,(str,list,tuple)):
#         return len(obj) > 5
#     return False
# print(a("abcdefdgf"))

# 3、写函数,计算传入的string中,数字,字母,空格以及其它内容的个数,并返回结果
# def count_string_elements(s):
#     counts = {'digit': 0, 'letter': 0, 'space': 0, 'other': 0}
#     for char in s:
#         if char.isdigit():
#             counts['digit'] += 1
#         elif char.isalpha():
#             counts['letter'] += 1
#         elif char.isspace():
#             counts['space'] += 1
#         else:
#             counts['other'] += 1
#     return counts
# test_str = "Hello 123!"
# result = count_string_elements(test_str)
# print(f"数字个数: {result['digit']}, 字母个数: {result['letter']}, 空格个数: {result['space']}, 其他内容个数: {result['other']}")

# 4、写函数,接收两个数字参数,返回较大的那个数字
# def a(a,b):
#     if a>b:
#         print(a)
#     else:
#         print(b)
# print(a(5,19))

# 5、编写一个函数cacluate, 可以接收任意多个数,返回的是一个元组.
# def calculate(*args):
#     if not args:
#         return (0,0,0,0)
#     total = sum(args)
#     a = total/len(args)
#     max_1 = max(args)
#     min_1 = min(args)
#     return (total,a,max_1,min_1)
# print(calculate(1,2,3))

# 6、编写一个函数, 接收字符串参数, 返回一个元组,元组的第一个值为大写字母的个数, 第二个值为小写字母个数.
# def a(s):
#     big = 0
#     small = 0
#     for i in s:
#         if'A'<= i <='Z':
#             big = big+1
#         elif'a'<= i <='z':
#             small= small+1
#     return(big,small)
# b= a('qGHghggH')
# print(b)

# 7、编写函数, 接收一个列表(包含30个1~100之间的随机整形数)和一个整形数k, 返回一个新列表.
# 函数需求:
# 将列表下标k之前对应(不包含k)的元素逆序;
# 将下标k及之后的元素逆序;
# def a(lst,k):
#     return [i for i in lst if i > k]


# 8、编写函数，从键盘输入参数x和n，计算并显示形如x+xx +xxx + xxxx + xxxxx+xxx…xxx+ 的表达式前n项的值
# 9、写函数,函数接收的4个参数分别是:姓名,性别(默认为男),年龄,地址
# def c(name, gender="男", age=None, address=None):
#     print(f"姓名: {name}")
#     print(f"性别: {gender}")
#     if age is not None:
#         print(f"年龄: {age}")
#     if address is not None:
#         print(f"地址: {address}")

# 10、写函数,接收n个数字,返回这些数字的和(动态传参)
# def a(s):
#     d = sum(s)
#     return d
# b=a([1,2,3])
# print(b)

# 11、在实参中传入多个可迭代对象(要有string,list,tuple,set,dict),将每个对象的每个元素都加到args或kwargs里
# 12、写函数,把传过来的列表中的每一个元素都用"_"拼接,并返回
# 13、写函数,传入一个数字,返回这个数的阶乘。示例：1x2x3....
# 14、写函数,返回一个扑克牌列表,里面有52项,每一项都是一个tuple
# 15、编写函数，求1+2+3+…N的和
# def a(n):
#     total = 0
#     for i in range(1,n+1):
#         total=total+1
#         return total

# 16、编写一个函数，求多个数中的最大值
# def a(*nums):
#     return max(nums)
# b = a(1,2,3)
# print(b)

# 17、编写一个函数，提取指定字符串中所有的字母，然后拼接在一起产生一个新的字符串
# 18、写一个函数，求多个数的平均值
# def a(*nums):
#     b = sum(nums)
#     c = len(nums)
#     d =b/c
#     return d
# e =a(1,2,3)
# print(e)
# 19、写一个自己的len函数，统计指定序列中元素的个数
# 20、找出传入的列表或元组的奇数位对应的元素，并返回一个新的列表
# 21、水仙花数：个位、十位、百位的立方加在一起等于数的本身
# 22、 定义函数，有一个形参，传入的是列表，数组大小不超过 100个，
# 数组中的每个元素值不允许超过 100，但是可以等于100，
# 如果列表大小超过了100个截取到第100个为止，要求返回的列表格式：
# 删除所有重复元素，使得每个元素只出现一次
# 按照数字的大小，由高到低排序返回
# 23、定义函数 getLength，打印用户传入的容器类型和数据长度
# def getLength(c):
#     print(f"容器类型: {type(c).__name__}, 数据长度: {len(c)}")

# 24、定义函数 generateNum( )
# def generateNum( ):
# 25、定义函数 moreThan(num)，判断输入的数字是否大于1500
# def moreThan(num):
#     if num >1500:
#         print('大于')
#     else:
#         print('小于')
# a =moreThan(12344)
# print(a)
# 26、定义函数，有两个形参，第一个形参到第二个形参的范围，所有平方数之和
# 27、写函数，检查传入字典的每一个value长度，如果大于2，
# 那么仅保留前两个长度的内容， 并将新内容返回给调用者
#  28、写函数，判断用户传入的对象（字符串、列表、元组）的元素是否为空
# def is_elements_empty(data):
#     if type(data) in [str, list, tuple]:
#         return all(not i for i in data)
#     return False

# 29、编写自定义函数，完成一个简单的减法运算函数
# def subtract(a, b):
#     return a - b

# 30、编写自定义函数，可以输出自己的名字即可。
# def print_my_name():
#     print("张三")
# print_my_name()

# 31、编写自定义函数：剪刀石头布
# 游戏开始，初始状态下用户和电脑都有 100 分，赢一局+10 分，输一局-10 分。
# 当用户为 0 分时，游戏结束，提示游戏结束，比赛输了
# 当用户为 200 分时，游戏结束，提示游戏结束，赢得比赛、每轮比赛都输出当前的分数
# 1 代表剪刀 2 代表石头 3 代表布
# 32、编写一个函数，接受一个字符串作为参数，并返回该字符串的逆序字符串
# def a(s):
#     return s[::-1]

# 33、编写一个函数，接受一个数字列表作为参数，并返回其中所有偶数的列表
# def a(s):
#     return [i for i in s if i % 2 == 0]

# 34、编写一个函数，接受一个字符串列表作为参数，并返回其中最长的字符串。



# 35、编写一个函数，接受一个数字列表作为参数，并返回其中所有数字的平方的总和
# 36、编写一个函数，接受一个字符串作为参数，并返回其中所有单词的首字母的大写形式
# 37、编写一个函数，接受两个列表作为参数，并返回两个列表的交集
# 举例：
# list1 = [100,200,300,454]
# list2 = [454,789,125,46]
# 返回：[454]
#  38、定义一个学生注册函数enroll()，打印学生姓名，性别，年龄，城市
